#include <stdio.h>
#include <string.h>
#include <assert.h>

char *my_strstr(const char *p1, const char *p2)
{
    assert(p1 && p2); // 首先p1/p2不能为空
    char *s1; 
    char *s2;
    char *cur = (char *)p1;

    if(! *p2){ // 如果p2是空字符串，那么字符串就是p1
        return ((char *)p1);
    }

    while(*cur){
        s1 = cur;
        s2 = (char *)p2;
        while (*s1 != '\0' && *s2 != '\0' && !(*s1 - *s2))
        { // 如果当前字符匹配上，继续下一个
            s1++;
            s2++;
        }
        if(!*s2){ // 如果s2++之后是'\0'说明已经找到
            return cur;
        }
        cur++;  // 一次匹配之后继续下个字符
    }
    return NULL;    // 没有匹配上子串
}

// strstr 查找子串
int main() 
{
    char *p1 = "asdfgc";
    char *p2 = "sdf";
    char *p3 = strstr(p1, p2);
    printf("a = %s \n",p3); // 输出 sdfgc,从找到的地方开始输出，一直到\0

    char *p5 = "";
    char *p4 = strstr(p1, p5); //输出asdfgc
    printf("b = %s \n", p4);

    char *p6 = "fg";
    char *p7 = my_strstr(p1, p6); //输出fgc
    printf("c = %s \n", p7);
    return 0; // 返回 0
}
